package com.xiaren.ui.edit;

import javax.swing.JScrollPane;

import com.xiaren.bean.SelectText;
import com.xiaren.ui.tree.JTreeNode;

/**
 * @主页 http://www.leaf123.cn/
 * @邮箱 xia5523@qq.com
 */
public abstract class FileEdit extends JScrollPane{

	// 更TreeNote.treeNodeId一致
	public long id;
	// 文本是否保存标志
	public boolean isSave = true;
	// 该面板所对应的选项卡名
	public String fileName = null;
	// 该面板所对应的树节点
	public JTreeNode treeNote = null;
	//是否是最大化状态
	public boolean ifMaxFrame = false;

	public FileEdit(JTreeNode treeNote) {
		this.treeNote = treeNote;
		this.fileName = treeNote.getUserObject().toString();
		this.id = treeNote.treeNodeId;
	}

	/**
	 * 为编辑选项卡添加选项,初始化操作
	 */
	public abstract void initEdit();

	@Override
	public boolean equals(Object obj) {
		if (obj instanceof FileEdit) {
			FileEdit new_name = (FileEdit) obj;
			return new_name.treeNote.hashCode() == this.treeNote.hashCode();
		} else {
			return false;
		}
	}

	@Override
	public int hashCode() {
		return (int) this.id;
	}
	@Override
	public String toString() {
		return this.fileName;
	}
	/**
	 * 返回该文件的内容，用于文件保存时，读取文件内容，然后保存
	 * @return
	 */
	public abstract String getFileContent();
	/**
	 * 用于文件文件读取时做的操作
	 */
	public abstract void writeFileContent(String content);
	/**
	 * 用于子类返回自己的类型
	 * @return
	 */
	public abstract String getType();
	/**
	 * 保存自己
	 */
	public abstract void saveMySelf() ;
	/**
	 * 读取自己
	 */
	public abstract void readMySelf() ;
	/**
	 * 得到自己类型锁对应的文件
	 * @return
	 */
	public abstract Object getTypeFile();
	/**
	 * 根据selectText选中某一段儿
	 * @param selectText
	 */
	public abstract void setSelectFile(SelectText selectText);

	public abstract SelectText getSelectFile();

}
